package com.example.job07.config;

import lombok.extern.slf4j.Slf4j;

/**
 *
 * @description 数据源上下文类, 使用{@link DataSourceContext#setRouteKey(String)}方法切换mysql链接
 */
@Slf4j
public class DataSourceContext {

    /**
     * 切换至主库
     */
    public static void master(){
        setRouteKey("1");
    }

    /**
     * 切换至从库
     */
    public static void slave(){
        setRouteKey("2");
    }
    /**
     * 根据数据源的key设置当前线程使用的数据源链接对象
     *
     * @param dataSourceRouterKey
     */
    public static void setRouteKey(String dataSourceRouterKey) {
        HOLDER.set(dataSourceRouterKey);
    }

    /**
     * 在线程负责上下文时边界时可手动移除
     */
    public static void removeRouteKey() {
        HOLDER.remove();
    }


    public static String getRoutekey() {
        return HOLDER.get();
    }

    /**
     * 线程级别的私有变量
     */
    private static final ThreadLocal<String> HOLDER = new ThreadLocal<>();
}
